<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //思考题: hasPubProperty检测某个属性是不是某个对象的 公有属性 
        // 原型上扩展方法

        //思路：在公有区中出现，就是公有
        Object.prototype.hasPubProperty=function hasPubProperty(attr){
            //this--p实例   参数 attr---"num"
            //let proto=this.__proto__;//Person.prototype
            //__proto__  IE有的版本不兼容

            //解决： Object.getPrototypeOf(xxx) 获取xxx原型对象
            let proto=Object.getPrototypeOf(this);//Person.prototype

            while(proto){//Person.prototype  Object.prototype  null
               if(proto.hasOwnProperty(attr)){
                  return true;
               }
               //proto=proto.__proto__;
               proto=Object.getPrototypeOf(proto);
            }
            return false;
        }

        function Person(name,age){
           //给实例对象 添加私有属性和方法
           this.name=name;
           this.age=age;
           this.num=200;
        }
        //原型对象 添加公有属性和方法
        Person.prototype.num=100;
        Person.prototype.show=function(){}

        let p = new Person("lili",18);

        console.log(p.hasPubProperty("age"));//false
        console.log(p.hasPubProperty("num"));//true
    </script>
</body>
</html>